package br.com.klis.batendoumabola.shared;

//import java.util.Date;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

import com.google.gson.annotations.Expose;
import com.google.gwt.user.client.rpc.IsSerializable;

	@Entity
	public class Pelada implements IsSerializable{
		
		public Pelada(){}
		
		@Id
		private Long id;
		private String user;
		@Expose
		private String nome;
		@Expose
		private String descricao;
		@Expose
		private Date data;
		@Expose
		private String local;
		@Expose
		private String logradouro;
		@Expose
		private String numero;
		@Expose
		private String bairro;
		@Expose
		private String cidade;
		@Expose
		private String estado;
		@Expose
		private Boolean temVagas;
		@Expose
		private Boolean gratuito;
		private String nomeUC;
		private String cidadeUC;
		private String localUC;
		private String dataTexto;
		
		public Long getId() {
			return id;
		}
		public void setId(Long id) {
			this.id = id;
		}
		public String getUser() {
			return user;
		}
		public void setUser(String user) {
			this.user = user;
		}
		public String getNome() {
			return nome;
		}
		public void setNome(String nome) {
			this.nome = nome;
		}
		public String getDescricao() {
			return descricao;
		}
		public void setDescricao(String descricao) {
			this.descricao = descricao;
		}
		public Date getData() {
			return data;
		}
		public void setData(Date data) {
			this.data = data;
		}
		public String getLocal() {
			return local;
		}
		public void setLocal(String local) {
			this.local = local;
		}
		public String getLogradouro() {
			return logradouro;
		}
		public void setLogradouro(String logradouro) {
			this.logradouro = logradouro;
		}
		public String getNumero() {
			return numero;
		}
		public void setNumero(String numero) {
			this.numero = numero;
		}
		public String getBairro() {
			return bairro;
		}
		public void setBairro(String bairro) {
			this.bairro = bairro;
		}
		public String getCidade() {
			return cidade;
		}
		public void setCidade(String cidade) {
			this.cidade = cidade;
		}
		public String getEstado() {
			return estado;
		}
		public void setEstado(String estado) {
			this.estado = estado;
		}
		public Boolean getTemVagas() {
			return temVagas;
		}
		public void setTemVagas(Boolean temVagas) {
			this.temVagas = temVagas;
		}
		public Boolean getGratuito() {
			return gratuito;
		}
		public void setGratuito(Boolean gratuito) {
			this.gratuito = gratuito;
		}
		
		public String getNomeUC() {
			return nomeUC;
		}
		public void setNomeUC(String nomeUC) {
			this.nomeUC = nomeUC;
		}
		public String getCidadeUC() {
			return cidadeUC;
		}
		public void setCidadeUC(String cidadeUC) {
			this.cidadeUC = cidadeUC;
		}
		public String getLocalUC() {
			return localUC;
		}
		public void setLocalUC(String localUC) {
			this.localUC = localUC;
		}
		public String getDataTexto() {
			return dataTexto;
		}
		public void setDataTexto(String dataTexto) {
			this.dataTexto = dataTexto;
		}
		
		@PrePersist
		@PreUpdate
		public void prePersist() {
		    if (nome != null) {
		      nomeUC = nome.toUpperCase();
		    } else {
		      nomeUC = null;
		    }
		    if (cidade != null) {
			      cidadeUC = cidade.toUpperCase();
			}else {
			      cidadeUC = null;
			}
		    if (local != null) {
			      localUC = local.toUpperCase();
			}else {
			      localUC = null;
			}
		}
		
		@Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result + ((data == null) ? 0 : data.hashCode());
			result = prime * result + ((id == null) ? 0 : id.hashCode());
			result = prime * result + ((nome == null) ? 0 : nome.hashCode());
			result = prime * result + ((user == null) ? 0 : user.hashCode());
			return result;
		}
		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			Pelada other = (Pelada) obj;
			if (data == null) {
				if (other.data != null)
					return false;
			} else if (!data.equals(other.data))
				return false;
			if (id == null) {
				if (other.id != null)
					return false;
			} else if (!id.equals(other.id))
				return false;
			if (nome == null) {
				if (other.nome != null)
					return false;
			} else if (!nome.equals(other.nome))
				return false;
			if (user == null) {
				if (other.user != null)
					return false;
			} else if (!user.equals(other.user))
				return false;
			return true;
		}
}
